﻿#ifndef PARAITEM_H
#define PARAITEM_H

#include <QObject>
#include <QString>
#include <QStringList>
#include "items/cmdconfig.h"

class ParaItem : public QObject
{
    Q_OBJECT
public:
    explicit ParaItem(QObject *parent = 0);
    ParaItem(const ParaItem & item);
    ~ParaItem();

public:
    ParaItem &operator=(const ParaItem & item);

public:
    void clean();

private:
    void copyData(const ParaItem & item);

public:
    int64_t mcenSel;        // 机型选择
    int     paraType;       // 参数类型(机器参数、工作参数、花样设置参数...)
    int     paraTypeSort;   // 参数类型分类(机器参数的速度参数、机器参数的动作参数...)

    int     indexInPara;    // 参数索引，-1，提示型显示; >= 0，该条目在参数中的位置
    int     bitInWord;      // 参数位索引
    int     readonly;       // 只读标志
    int     valueType;      // 参数值类型 = 0, 无值; = 1, 数字输入型; = 2, 开关选择型; = 3, 列表选择型; = 4, 字符输入型
public:
    QString paraName;       // 参数名称
public:
    int64_t value;          // 数字输入型数值
    int64_t minVal;         // 输入值范围下限
    int64_t maxVal;         // 输入值范围上限
    int64_t defValue;       // 默认值
    int     afterPoint;     // 保留小数位数
    QString unitStr;        // 单位
    QString valueStr;       // 字符输入型字符

public:
    QString selList;        // 列表选择型参数列表,通过"\n"来分割
    int     selIdx;         // 选择项目
    int     defIdx;         // 默认选择
public:
    int     showPriority;   // 显示优先级
    int     authority;      // 参数权限

};

#define PARA_VALUE_TYPE_NONE          0 // 无
#define PARA_VALUE_TYPE_INT           1 // 数值输入型
#define PARA_VALUE_TYPE_SW            2 // 开关型
#define PARA_VALUE_TYPE_LIST          3 // 列表选择型
#define PARA_VALUE_TYPE_STRINPUT      4 // 字符串输入型
#define PARA_VALUE_TYPE_CLICK         5 // 点击触发型

//参数类型(点击触发型的参数种类)
#define	PARA_TYPE_MACH              0x00000001	 // 主控机器参数
#define	PARA_TYPE_WORK              0x00000002	 // 主控工作参数
#define PARA_TYPE_DEF_MC            0x00000004	 // 出厂默认机器配置参数（读取有效）
#define PARA_TYPE_DEF_WK            0x00000008	 // 出厂默认机器工作参数（读取有效）
#define PARA_TYPE_PATTERN           0x00000010   // 花样参数
#define PARA_TYPE_SOFTWARESET       0x00000020   // 软件设置参数
#define PARA_TYPE_TIMESET           0x00000040   // 时间设置参数
#define PARA_TYPE_COMMONFUN         0x00000080   // 常用功能设置参数
#define PARA_TYPE_NETWORKSET        0x00000100   // 网络管理设置参数
#define PARA_TYPE_ROOT              0x00000200   // 超级用户参数
#define PARA_TYPE_SPINDLETEST      0x00000400   //主轴研车参数
#define PARA_TYPE_HMICONFIGURATION    0x00000800   //界面配置
#define PARA_TYPE_IOTCONFIGURATION   0x00001000   //物联网配置
#define PARA_TYPE_NETWORKSETTINGS   0x00002000    //网络设置

//参数分类
#define MC_SORT_SPEED         0x0001	// 速度参数
#define MC_SORT_ACTION        0x0002	// 动作参数
#define MC_SORT_DETECT        0x0004    // 检测参数
#define MC_SORT_POSITION      0x0008	// 位置参数
#define MC_SORT_SETTING       0x0010	// 设置参数

//花样参数分类
#define PATTERNPARA_SORT_DSTR   0x0001	// dst和dsr文件花样参数
#define PATTERNPARA_SORT_QUI    0x0002  // qui文件花样参数
#define PATTERNPARA_SORT_PLT    0x0003  // plt文件花样参数

//花样预览参数
#define PATTERN_PREVIEW     0x1101

#endif // PARAITEM_H
